package com.test.branch;

public class SwitchDemo2 {
    public static void main(String[] args) {
        //目标：Switch的注意事项，清楚穿透性问题
        test1();
        test2();
        test3();
    }

    //1.表达式类型只能是byte、short、int、char，JDK5开始支持枚举，JDK7开始支持String、不支持double、float、long。
    public static void test1(){
//        System.out.println(0.1 + 0.2);//0.30000000000000004
//        double a = 0.1 + 0.2;
//        switch (a) {
//            case 0.3:
//                System.out.println("ok");
//                break;
//            default:
//                System.out.println("no");
//        }
    }

    //2.case给出的值不允许重复，且只能是字面量，不能是变量。
    public static void test2(){
        int x = 10;
        int b = 15;
        switch (x) {
            case 10:
                System.out.println("ok");
                break;
            case 15:
                System.out.println("no");
                break;
            default:
                System.out.println("default");
        }
    }

    //3.正常使用switch的时候，不要忘记写break，否则会出现穿透现象。
    //穿透性作用：相同程序的case块，可以通过穿透性进行合并，从而减少重复代码书写
    public static void test3(){
        int x = 10;
        switch (x) {
            case 10:
                System.out.println("ok");
            case 15:
                System.out.println("no");
            default:
                System.out.println("default");
        }
    }

}

